iT邦幫忙

2023 iThome 鐵人賽

DAY 27
2
Vue.js

Nuxt 3 實戰筆記系列 第 27

[Day 27] Nuxt 3 產生靜態網頁部署至 Cloudflare Pages 與持續自動部署

  • 分享至 

  • xImage
  •  

前言

Nuxt 3 的渲染模式,可以支援我們產生靜態的頁面,而這些預渲染的靜態網頁檔案,就很適合部署至靜態的託管平台來服務,例如 Cloudflare Pages 或 Github Pages 等等雲端服務上,本篇文章將介紹如何將一個網站產生靜態網頁並部署至 Cloudflare Pages。

Cloudflare Pages

Cloudflare Pages 是 Cloudflare 所提供的一個靜態網站托管解決方案,它為開發者提供了一個簡單、快速且安全的方式來部署和托管前端網頁應用程式。

https://ithelp.ithome.com.tw/upload/images/20231012/20152617MlkDK0fDs7.png

在部署我們 Nuxt 3 網站之前,你可以先註冊一個 Cloudflare 的帳號,Cloudflare 將提供一些免費額度讓我們可以將網站部署至 Cloudflare Pages。

Nuxt 3 產生靜態網頁

首先,我們在準備要部署的 Nuxt 3 專案進行預渲染,這裡我使用的是一個簡易的部落格專案,你也可以使用實戰筆記的範例部落格專案來進行部署的測試,範例專案程式碼的網址:https://github.com/ryanchien8125/ithome-2023-ironman-nuxt3/tree/day27/nuxt-app-blog

接下來,我們開啟終端機並進入專案的根目錄,執行下列指令產生出網站的靜態頁面。

npm run generate

https://i.imgur.com/dz2RkwB.gif

generate 指令執行成功後,專案目錄下會產生可以用來部署的資料夾 .outputdist,其中 dist 目錄是一個軟連結的捷徑,dist 目錄會指向 .output/public 目錄,所以你會發現這兩個資料夾的檔案內容相同。

nuxt-app/
├── ...
├── .output/
│   ├── public      <-- 產生的靜態頁面放置在這個 .output/public 目錄內
│   └── nitro.json
└── dist     <-- dist 與 .output/public 目錄內的檔案相同

在部署之前,你可以使用終端機所顯示的指令,來測試一下產生網頁是否符合你的預期。

npx serve .output/public

接下來,我們就可以使用 .output/public 內的靜態網頁來進行部署。

建立 Cloudflare Pages 專案與部署網站

Setp 1. 建立 Cloudflare Pages 專案

首先,我們前往 Cloudflare 的主控台,點擊左方選單的 「Workers 和 Pages」 選項前往開始使用 Workers 和 Pages。

https://i.imgur.com/sLK3IWq.gif

接著我們點擊下圖紅色框起處的「上傳資產」按鈕。

https://ithelp.ithome.com.tw/upload/images/20231012/20152617QldiKoAWl0.png

Setp 2. 建立 Cloudflare Pages 專案名稱與上傳專案資產

在第一次使用時,我們需要為專案來建立名稱,例如填寫 ithome2023-nuxt-app,專案的名稱也會影響 Cloudflare 提供給我們開發測試網址的 Domain。

https://ithelp.ithome.com.tw/upload/images/20231012/201526175Oh5sIk1mn.png

https://ithelp.ithome.com.tw/upload/images/20231012/20152617za8n3SAHAj.png

接著,我們就可以點擊「建立專案」的按鈕,來準備上傳專案資產,我們將剛才所產生的靜態檔案目錄 .output/publicdist 直接進行上傳,你也可以將目錄內的檔案進行壓縮來進行上傳部署。

https://i.imgur.com/gkVOODP.gif

使用壓縮檔上傳時,記得直接壓縮目錄內的所有檔案,而非外層的目錄,否則可能會導致無法瀏覽網站。

Setp 3. 檢查上傳的專案資產與部署網站

上傳完成後,你可以展開目錄或壓縮檔來檢查這些檔案是否有遺漏。

https://ithelp.ithome.com.tw/upload/images/20231012/20152617rJ6B2i7QI0.png

確認沒問題後,你就可以點擊如下圖紅色框起處,畫面最後的「部署網站」按鈕來進行網站的部署。

https://ithelp.ithome.com.tw/upload/images/20231012/20152617EHnwf6AWix.png

Setp 4. 測試網站

如果順利完成部署,你可以透過畫面上所提示的網址連結,來瀏覽部署好的網站。

https://ithelp.ithome.com.tw/upload/images/20231012/20152617WDjQiY8I79.png

Cloudflare 所提供的開發測試連結,在首次建立時可能會發生 DNS 尚未解析出主機位置,而無法正常瀏覽網站,請耐心等候或使用其他 DNS 服務來解析網域名稱,就能看到網站順利的載入,也就代表我們完成了 Nuxt 3 靜態網頁的部署。

https://i.imgur.com/O6NoW5T.gif

如果你的網站有新版本需要部署,重新產生靜態頁面後,你可以再次回到 Cloudflare Pages 中的專案概覽,點擊下圖紅色框起處的「建立新部署」的按鈕,來上傳新版本的專案資產。

https://ithelp.ithome.com.tw/upload/images/20231012/20152617zPW4jDXath.png

Cloudflare Pages 結合 Github 進行網站部署

除了可以手動的上傳專案的靜態檔案進行部署外,你也可以將 Cloudflare Pages 的專案,與 GitHub 或 Gitlab 的專案倉庫進行連動,如此一來我們保存在 Git 版本控制倉庫的專案,也能直接被 Cloudflare Pages 取得專案程式碼來進行產生靜態檔案與部署。

Setp 1. 建立 Cloudflare Pages 專案

首先,我們前往 Cloudflare 的主控台,點擊左方選單的 「Workers 和 Pages」 選項前往開始使用 Workers 和 Pages,接著我們點擊下圖紅色框起處的「連線至 Git」按鈕。

https://ithelp.ithome.com.tw/upload/images/20231012/20152617E4gzWggVIx.png

Setp 2. 選擇連接 GitHub 專案

接著將會進入引導的流程,我們點擊下圖中的「連接 GitHub」按鈕,接著網頁將會將會引導你進行登入與授權。

https://ithelp.ithome.com.tw/upload/images/20231012/20152617XZxMvC0TL8.png

當出現下圖的安裝與授權時,你可以選擇 All repositories 來授權你的 GitHub 帳號內的全部的倉庫,也可以指定特定倉庫進行授權,我們這裡選擇 Only select repositories,並授權我們要部署的專案倉庫,確認完畢後點擊畫面上「Install & Authorize」按鈕來進行授權。

https://ithelp.ithome.com.tw/upload/images/20231012/20152617Gj9dvAxTvk.png

接下來網頁將會重新導向回 Cloudflare,我們在畫面上確認要部署的專案來自的 GitHub 帳戶與選擇的存放褲庫,確認沒問題後,點擊下圖右下角的「開始設定」按鈕。

https://ithelp.ithome.com.tw/upload/images/20231012/20152617j5bJgkH7UJ.png

Setp 3. 設定建構的配置與部署

設定我們的專案名稱,與選擇要部署生產環境的分支。

https://ithelp.ithome.com.tw/upload/images/20231012/201526170JCeSM013O.png

接著在組建設定的區塊,設定「 Framwork 預設」選項調整為「Nuxt.js」,接著將組建命令調整為「npm run generate」,組建輸出目錄調整為「dist」。

https://ithelp.ithome.com.tw/upload/images/20231012/20152617dWD4FBS6Ua.png

Setp 4. 儲存並開始進行部署

設定確認沒問題後,就會開始連動 GitHub 的倉庫進行部署,完成後同樣就會出現可以瀏覽網站的測試網址。

https://i.imgur.com/V8O9qmQ.gif

自動持續部署新版本

如下圖,Cloudflare Pages 設定了連動的專案儲存倉庫,當有新的 commit 推送至所選擇的部署分支,那麼就會觸發自動部署的流程,你可以在專案的概覽看到所有的部署資訊與狀態。

https://i.imgur.com/iiJ2PyL.gif

小結

你可以自己選擇所需要的靜態網站託管平台,來部署 Nuxt 3 所產生的靜態頁面,而透過 Cloudflare Pages 你可以擁有許多方便的功能,甚至在連動專案倉庫後不需要進行額外的設定,預設就擁有可以持續自動部署新版本的功能,對於專案的開發與部署能省下不少時間。


感謝大家的閱讀,歡迎大家給予建議與討論,也請各位大大鞭小力一些:)
如果對這個 Nuxt 3 系列感興趣,可以訂閱接收通知,也歡迎分享給喜歡或正在學習 Nuxt 3 的夥伴。

範例程式碼

參考資料


上一篇
[Day 26] Nuxt 3 錯誤頁面 (Error Page) 與錯誤處理 (Error handling)
下一篇
[Day28] Nuxt 3 建構打包與部署至 Cloudflare Workers
系列文
Nuxt 3 實戰筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
2魚
iT邦新手 5 級 ‧ 2024-04-29 10:32:20

謝謝大大的教學,
我有成功部署到網站了!

但是文章內的指令 npm run genrate 有誤,
我怕有跟我一樣複製貼上的人找不到錯誤 ><
正確應該是 npm run generate

自動部署超方便的啦 ✨✨✨

Ryan iT邦新手 1 級 ‧ 2024-05-02 13:35:22 檢舉

恭喜您成功部署 超讚!!

感謝提醒~~我這個奶油手打錯惹 QAQ

我要留言

立即登入留言